package com.archtecture.view.utils;

import java.text.MessageFormat;
import java.util.ResourceBundle;

import com.archtecture.control.enums.Arquivo;
import com.archtecture.control.enums.Mensagem;
import com.archtecture.control.utils.UtilLog;

public class UtilMensagens {

	// Exceptions
	private final static String	CONSTRAINT_VIOLATION_EXCEPTION;

	// Tipos Erro
	private final static String	NOT_NULL;

	static {
		CONSTRAINT_VIOLATION_EXCEPTION = "org.hibernate.exception.ConstraintViolationException";
		NOT_NULL = "cannot be null";
	}

	public static String obterMensagemErro(Throwable cause) {

		if (cause != null) {
			String erro = cause.toString();

			if (erro.startsWith(CONSTRAINT_VIOLATION_EXCEPTION) && erro.endsWith(NOT_NULL)) {
				String key = erro.replace(CONSTRAINT_VIOLATION_EXCEPTION + ": Column '", "").replace("' " + NOT_NULL, "");
				return obterTextoArquivo(Arquivo.MENSAGENS, Mensagem.ERRO_CAMPO_NOT_NULL.name(), obterTextoArquivo(
						Arquivo.EXCEPTION, key));
			}
		}
		return null;
	}

	public static String obterTextoArquivo(Arquivo arquivo, Object key, Object... parametros) {

		try {
			ResourceBundle resourceBundle = ResourceBundle.getBundle(arquivo.toString());
			return MessageFormat.format(resourceBundle.getString(key.toString()), parametros);
		} catch (Exception e) {
			UtilLog.logar(e.getMessage());
			return "ERROR: " + arquivo + ": " + key.toString();
		}
	}

}
